mercoledì, gennaio 02, 2008
Virtual Cluster 2008!
Riguardo alle tecnologie di parallelizzazione di un programma, si ricorda che questo deve essere adatto allo scopo, e cioè deve presentare la possibilità di dividere l'onere computazionale in più threads (il processo è l'immagine in RAM del programma, mentre il thread è l'unitò granulare in cui un processo è suddiviso) i quali, per farla breve, possono essere distribuiti su più unità logiche.
Per chi inoltre si domandasse il perchè di riscrivere un programma per l'esecuzione in cluster, basti sapere che un processo, per essere eseguito dopo essere stato compilato con un compilatore "comune", ha bisogno di "andare a parare" su una singola unità logica che lo gestisca. La parallelizzazione è attuata attraverso l'implementazione ad esempio di un protocollo di comunicazione fra diverse macchine, come le librerie MPI. Le virtual machine che girano in cluster non esistono appunto per questo motivo e per il fatto che "emulare" un processore farebbe colare a picco le prestazioni (provate a installare Virtual PC sopra una macchina virtuale in Vmware e poi raccontatemi...).
Tornando a noi, mi occuperò in questo articolo di definire degli scenari per l'esecuzione di codice parallelo attraverso l'uso (e quindi la preventiva costruzione) di cluster adatti allo scopo.
Fra le infinite possibilià offerte dal mercato dei software e dal mondo OSS, mi sento di portare all'attenzione due di queste, caratterizzate prevalentemente da facilità e velocità di implementazione. Parto inoltre dal presupposto che il parco macchine usato per il cluster sia un ambiente Windows, con pc relativamente recenti e collegati con Ethernet 10/100, scenario molto tipico in aziende e istituti di educazione e/o ricerca).
Il primo scenario proposto prevede la costruzione di una macchina SMP (Symmetric Multi-Processing, che è il modo per mettere più CPU in parallelo usato dai recenti processori multi-core) con OpenMOSIX, progetto purtroppo non più seguito dagli sviluppatori dal 1° dicembre 2007. L'idea è quella di eseguire in Vmware Server 1.0 (che è gratuito) il sistema operativo ClusterKNOPPIX o ParallelKNOPPIX, che costituirà il nodo principale del cluster. Per usare tutte le altre macchine Windows, si può installare e configurare coMosix, che è bene configurare prima di fare il boot della virtual machine con Linux. Per la configurazione seguire il tutorial nel sito del pacchetto (niente di particolarmente difficile).
Abbiamo così a disposizione una macchina SMP in Linux, il tutto senza intaccare le installazioni Windows. Questo scenario è efficace fino a 16 macchine, dopodichè le prestazioni calano in picchiata. Inoltre è possibile usare la configurazione di rete già esistente. Consiglio di avviare manualmente (in locale o in remoto) il servizio di coMosix, per evitare che il processore fisico di ogni machcian venga occupato inutilmente se Linux (nodo principale del cluster) non è in funzione (questo per evitare usi indesiderati della CPU host, perchè la rete usata dal cluster è la stessa di quella fisica e inoltre il "padre" di coMosix, coLinux, occupa permanentemente una CPU su due in Pentium 4).
Da ricordare infine che il cluster così costruito è una macchina SSI (cfr. tassonomia di Flynn), e può essere usato con programmi che sono compilati per CPU multicore.
Il secondo scenario proposto riguarda la recente possibilità di usare il nuovo Windows Server Cluster Edition (o il nuovo Windows 2008 HPC), che gira solo su piattaforme a 64 bit. L'idea qui è di distribuire in ogni macchina Virtual Server 2005 R2 Sp1 (la versione Standard fa al caso nostro) e una installazione virtuale del sistema operativo suddetto. Va da sè che le macchine host devono avere il sistema operativo a 64 bit per poterlo ospitare, e le prestazioni migliori sono raggiunte se hanno anche 4GB di RAM, di modo che possiamo attivare da BIOS la virtualizzazione assistita tramite hardware. In questo modo ancora una volta non si intacca l'installazione e la configurazione delle macchine host, anche se la procedura è più onerosa in termini di tempo. Per chi avesse tutte le installazioni di Windows a 32 bit, allora la scappatoria sta nel fatto di usare Vmware per l'emulazione, che permette di installare anche OS a 64 bit se il processore fisico supporta queste istruzioni). I vantaggi della piattaforma Microsoft sono la maggior scalabilità e le migliori prestazione del cluster, che differisce da OpenMOSIX per efficienza e sistema di distribuzione del carico (è molto simile ad un grid). Conviene preparate un'immagine quorum del disco in formato VHD da distribuire fra le macchine, magari con SysPrep per eseguire il mini-setup iniziale. L'emulazione va fatta con due schede di rete virtuali, una che comunica con l'esterno al solo scopo di raggiungere il controller di dominio esistente in azienda, e l'altra, con sottorete diversa, per le comunicazione del cluster. Per coloro i quali la sicurezza del cluster non è un problema, basta la rete locale normale (se il cluster però è di tipo load balancing o fail-over, separare le interfacce è consigliato). Una volta terminata la distribuzione, seguire i wizard di installazione del cluster, particolamente semplici e intuitivi. Credo appaia ovvio che questo tipo di installazione pesa molto di più nelle macchine host di quella precedente, ma ha il vantaggio, per alcuni forse fondamentale, di poter eseguire codice parallelo in macchine Windows.
Infine segnalo per completezza la Sun N1 Grid Engine, che ha prestazioni vicine al secondo scenario, e altri modi per usare Windows in cluster come quello offerto dalla software house Digipede.
Per chi come me fosse interessato a far girare Matlab in un cluster, allora è possibile usarlo, nella edizione per Linux, con il primo scenario, poichè dalla versione 2007a Matlab supporta gli SMP (particolarmente adatta al calcolo in parallelo è l'inversione di matrici); dato comunque che il riconoscimento dei processori disponibili nel cluster non è così automatico, alcuni suggeriscono di usare tool come JavaParty o JavaPorts per eseguire vecchie versioni di Matlab in parallelo. Indico anche altre possibilità in Matlab a livello di codice, come la Distributed Computing Engine (integrata), oppure le librerie MPICH per Matlab.
sabato, dicembre 15, 2007
LCS 2005 - 2 - Web Access
Per chi volesse implementare un servizio web di accesso, solo testuale, senza audio e video, la Microsoft mette a disposizione il pacchetto Communicator Web Access (CWA), multilingua e indipendente dalla lingua del server. Per utilizzarlo è necessario aggiornare il server al Sp1 con la stessa procedura per l'installazione.
In pochi minuti la procedura di setup è completata e possiamo procedere alla configurazione: viene aggiunto dal setup un nuovo sito in IIS che servirà per gestire il servizio. Configurare debitamente le porte di accesso (la modalità di accesso può essere SSL o HTTP in chiaro, ma non entrambe).
La configurazione avviene attraverso uno snap-in di mmc che è comodo utilizzare insieme allo snap-in di LCS, dato anche che quello installato dal setup di default non funziona.
Per la comunicazione fra OWA e LCS ci serve un certificato Mutual TLS, che bosognerà generare.
Per crearlo, se avete Windows Server 2003 e il servizio Certificati installato, seguite questi passi:
- dal server aprire http://nome_server/certsrv ;
- cliccare pagina dopo pagina su: Request a certificate -> Advanced certificate request -> Create and submit a request to this CA;
- immettete i dati richiesti, e come nome certificato (nome container) immettere nome_server.dominio (cioè l'FQDN del server), e in Certificate type selezionare Other... e immettere il seguente OID:
1.3.6.1.5.5.7.3.1,1.3.6.1.5.5.7.3.2
senza spazi fra le cifre; - inviare il certificato e poi approvarlo dalla mmc del server certificati, cliccando col desto e poi Emetti;
- ritornare al sito del passo 1 e scaricare il certificato;
- installarlo e usarlo come certificato Mutual TLS per far comunicare LCS e OWA.
Live Communications Server 2005 - 1 - Installazione
La ragione per cui scrivo una guida minimale per questo software è che la documentazione relativa è scarsa, non completa e solo in lingua inglese. La versione 2005, già sorpassata dalla 2007 uscita quest'anno, è ancora valida per le sue prestazioni in termini di requisiti di sistema e perchè lavora molto bene con Windows Server 2003, ancora per qualche mese la punta di diamante dei sistemi operativi server di casa Microsoft.
Vediamo ora l'installazione. Dapprima bisogna scegliere fra la versione Standard e quella Enterprise, che differiscono per la portata massima di utenti (la Standard arriva a 1024) e per la necessità della Enterprise di avere un servizio SQL Server 2000 (almeno Sp3) in qualche server della rete aziendale. La versione Standard invece installerà nello stesso server su cui gira il servizio SQL Desktop Engine, più leggero e a configurazione zero.
Una volta scelta la versione più adatta, all'autorun del CD ci si accorge che non esiste un vero e proprio setup, ma si deve seguire la guida per il deploy, anche se l'installazione è singola.
Dopo diverse operazioni guidate su Active Directory, finalmente viene installato il servizio e per finire bisogna attivarlo. La porta TCP per le comunicazioni in chiaro è la 5060, mentre per quelle SSL si usa la 5061 di default. Configurare i firewall di conseguenza.
sabato, novembre 17, 2007
Applicazioni portatili per pendrive
- PortableApps, solo in inglese, software essenziale;
- WinInizio PenSuite, in italiano, molto completo e scalabile a seconda della dimensione della chiavetta;
- winPenPack, come sopra.
venerdì, novembre 09, 2007
Guida minimale all'uso di Metasploit
Per costruire un exploit è conveniente usare un framework, cioè, analogamente a quanto succede per la costruzione di programmi, una serie di librerie modulari e un ambiente di sviluppo che facilitano e velocizzano il lavoro.
In questo articolo ci si focalizzerà su Metasploit, framework per exploit che gira su quasi tutte le piattaforme.
Per iniziare scaricate la versione più adatta al vostro OS da qui.
Poi, dopo aver scorso tutti i tipi di attacchi offerti dal programma, potete cominciare a usare la shell di Metasploit, di cui si riportano in seguito alcuni comandi chiave:
- show exploits per vedere una lista degli exploit disponibili;
- use exploit path/nome per settare l'exploit da usare nella sessione corrente;
- info per ottenere informazioni dettagliate sull'exploit in uso;
- show options per mostrare le opzioni di esecuzione dell'exploit;
- set PAYLOAD ... per caricare il payload da utilizzare;
Per completezza si citano anche altri due framework molto validi per generare exploit:
- CORE IMPACT, solo per Windows, molto facile da usare, payload già pronti, costo elevato;
- Immunity Canvas, per Windows e Linux, a pagamento, aggiornato molto spesso, si trovano payload costruiti su zero days bug.
Copia di sicurezza di CD/DVD protetti con errori
Questo metodo era originariamente nato per proteggere i CD audio dalle copie pirata: infatti l'inserimento nella traccia di settori con contenuto errato impediva solo la copia su un pc delle tracce, mentre l'esecuzione sugli stereo era garantita, senza avvertire alcun disturbo audio (che però esisteva, ma era impercettibile anche agli orecchi più educati).
La protezione, semplice nella sua concezione ed estremamente efficace, è stata estesa ai CD o DVD dati, rendendo impossibile la loro copia (o ripping), mentre la loro esecuzione è garantita dal fatto che l'eseguibile che possono contenere sa le zone "corrotte" da saltare surante l'esecuzione.
In questo articolo vi propongo un metodo in 4 semplici passi per ottenere una copia del CD o DVD protetto in questo modo, pulita dagli errori introdotti.
- creare un'immagine MDF+MDS con Alcohol120%, avendo cura di selezionare l'opzione "Salta i settori che contengono errori";
- convertire l'immagine MDS in ISO, ad esempio con UltraISO - questo passaggio serve per trasformare gli "errori di ridondanza ciclica", introdotti da Alcohol al posto dei settori corrotti, in "errori di parametro";
- montare la ISO in drive virtuale;
- estrarre le tracce con ISOBuster, cliccando con tasto destro del mouse nella partizione contrassegnata dalla icona blu e poi selezionando "Extract etichetta_disco" (prima voce). Rispondere "Ignore All" alla richiesta di come procedere per i "bad sectors".
Nel caso di CD o DVD bootable, estrarre dalla ISO anche l'immagine di avvio e ricostruire il tutto con un buon programma di burning (es. Nero).
giovedì, novembre 01, 2007
Finalmente Leopard!
Come scegliere l'antivirus per il PC
Come noto da tempo gli antivirus gratuiti per pc sono molti e fra i migliori si contano AVG, Avast! e AntiVir. Ma questi sono veramente efficaci? E ci si può fidare del firewall di Windows? Per risolvere questi e altri dubbi c'è AV-Comparatives, un sito di prove comparative per aiutare l'utente finale a scegliere l'antivirus da installare a seconda della protezione desiderata e delle proprie esigenze e competenze.
sabato, settembre 15, 2007
Strumenti per server
Questi sono principalmente:
- interprete PHP, Perl e Python per IIS (gli ultimi due sono poco usati in IIS);
- server di posta POP3/IMAP (SMTP è già incluso in Windows e funziona discretamente);
- servizio di database.
- PHP versione 5 (in attesa della 6 che promette bene);
- hMailServer, open source per Windows, insieme a SquirrelMail per l'accesso alla posta da web (non servirà più l'SMTP di Windows);
- MySQL.
giovedì, settembre 13, 2007
Accesso messagistica da web
sabato, settembre 01, 2007
OpenDNS
Vorreste che quando visitate una pagina web qualcuno vi avvisasse se c'è pericolo di phishing o di virus?Ora c'è OpenDNS che fa questo per voi, completamente gratis, e nel modo più "nativo" che potreste immaginare: infatti quando un pc della rete aziendale o domestica richiede un sito web ad esempio, il server DNS è quel software che traduce gli indirizzi alfanumerici in IP. Quindi OpenDNS non può che mantenere quello che promette, il metodo di implementazione non lascia scampo.
Una considerazione tenica: il servizio funziona al meglio se avete un IP fisso, infatti dopo la registrazione al sito è possibile personalizzare il DNS in modo che faccia quello che desideriamo, oltre che a fornire una serie di statistiche molto utili all'amministratore di rete, come quella dei siti più cliccati.
Il sito contiene molte guide, di livello base e facilmente comprensibili, per configurare il pc o il server per l'uso del servizio offerto.
Con OpenDNS si gudagna in velocità, in sicurezza (è infatti possibile bloccare i siti non autorizzati o pericolosi) e in usabilità, infatti uno dei servizi offerti è quello di correggere gli errori nella digitazione dell'indirizzo (ad es.: ".ocm" al posto di ".com").
Provare per credere.
mercoledì, agosto 29, 2007
La migliore soluzione di hosting gratuito
Siete stanchi di dover pagare per ottenere in sito funzionale? Avete finito gli AlterCents in Altervista?
La migliore soluzione di hosting con supporto PHP5 e MySQL 5 secondo me è data dalla combinazione di:
- db4free.net, che consente di avere un account in un database MySQL 5 senza limitazioni (in alternativa c'è FreeMySQL, che credo sia anche più veloce);
- 110MB offre il servizio di hosting con PHP più veloce e capiente (2GB di spazio + 100GB traffico/mese). Inoltre, a differenza di Altervista ed altri, questo provider non limita la connessione a server SQL esterni. Segnalo inoltre t35.com (upload limit 500kB!!!) e quotaless.com; quest'ultimo (con obbligo di banner pubblicitati in ogni pagina) comprende anche il database MySQL integrato e illimitato e include l'installazione di pacchetti già pronti (MyBB, PhpBB, ecc.). Tutti questi provider offrono spazio illimitato ma un severo upload limit (quando va bene è 5MB). Questa limitazione non è aggirabile. Inoltre il register_global, il php socket e sendmail per PHP sono spesso disabilitati o a pagamento.
Infine per chi deve spostare file via Internet c'è File2You, che funziona rigorosamente senza iscrizione ed è limitato a 150MB, ma è estremamente utile e veloce.
domenica, agosto 26, 2007
Mac OS X x86 - Uso della tastiera
La tastiera di un Mac è diversa da quella dei pc normali. Una volta installato Mac OS X sul pc e dopo aver selezionato nella configurazione iniziale il layout di tastiera "Italian PRO" (che fa sì che il tasto "ò" di una QWERTY italiana non sia più la lettera "m"!) potrebbe essere utile sapere un altro po' di cose:
- per fare la chiocciola @ premere "tasto Windows"+@;
- le tastiere dei pc non possiedono il tasto "command" (l'equivalente del tasto Windows), che viene sostituito da Alt;
- per avere una panoramica delle scorciatoie da tastiera nel Mac, visitare questo link (in lingua inglese).
sabato, agosto 25, 2007
Installazione di PHP in IIS 7 di Windows Server 2008

Per installare PHP IIS 7 di Windows Server 2008 seguite questi passi:
- scaricare l'archivio zip di PHP 5 da www.php.net;
- scompattare il tutto in C:\php e rinominare il file php.ini-recommended in php.ini;
- eseguire i settaggi necessari intervenendo sul file php.ini (vedi, in questo blog, l'articolo sull'installazione di PHP in IIS 5.1);
- aggiungere C:\php al Path di Windows;
- aprire la console di amministrazione di IIS (vedi screenshot);

- cliccare su Handler mappings, poi su Add Script Map... dal menu di destra;
- completare i campi nell'ordine con: *.php ; C:\php\php5isapi.dll ; PHP come in figura;
- rispondere di sì alla successiva rischiesta di agginta dell'estensione alle restrictions;
- riavviare il servizio e provare l'installazione con lo script .
Windows Server 2008 beta 3
Windows Server 2009 può essere installato in due modalità (per ogni versione - Standard, Enterprise, ecc.):
- modalità completa;
- modalità core: viene installato il sistema operativo minimo, senza interfaccia grafica per ottimizzare le prestazioni.
La caratteristica "core" e il nuovo modo di installare i componenti di Windows sono sintomo di una svolta in casa Microsoft verso l'unixizzazione (come si vede
nello screenshot, le componenti installabili di Win2008 sono divise in "Roles" - come può essere IIS - e "Features" - ad es. NET Framework), e l'installer segnala addirittura le dipendenze. L'approccio è disorientante in un server Windows, ma a mio parere molto più funzionale e capibile.Il server parte sempre con audio e accelerazione 3D disabilitati. Inoltre è presente nel sistema Microsoft Virtual Server, profondamente integrato per una virtualizzazione a portata di click.
Questa versione è sicuramente una svolta per quanto riguarda le tecnologie server di Microsoft. Da provare per abituarvici!
Mac OS X x86 - Installazione
giovedì, agosto 23, 2007
Non serve più alzare gli occhi al cielo...

martedì, agosto 21, 2007
Mac OS X x86 - Introduzione
Il punto è che Mac OS non gira sui PC, ma solo sui computer Apple. E questa è un'ovvietà. Quello che invece è sembrata un'ovvietà agli hacker di mezzo mondo è che un sistema operativo compilato per processori Intel girasse sui PC. Ed ecco qua.
Ci sono due cose preliminari da tenere in considerazione prima di procedere ad una installazione su un PC:
- il Mac OS X non ha molti driver al suo interno, anzi dovrebbe avere solamente quelli delle componenti Apple (in verità il supporto è un poco più esteso, e in più sono oramai disponibili driver di terze parti), quindi se volete installare in Mac sul vostro PC verificate che abbia delle componenti compatibili nel sito indicato sotto, soprattutto cverificate il processore, in modo da procurarvi la giusta versione delle patch (vedi prossimo punto);
- per l'installazione sul PC va modificata l'immagine del Mac OS X originale (e vi ricordo che fare questo è reato) con una patch (es. JaS) che cambia a seconda della versione da modificare e, qualche rara volta, persino dall'hardware di destinazione.
In ogni caso potete trovare sul web un sito pieno di istruzioni ed esperienze: OSx86 Project.
Inoltre segnalo un sito molto interessante per chi non ha tempo e voglia di costruirsi le immagini DVD da solo: Uphuck.
Buon divertimento!
domenica, agosto 05, 2007
Best operating system of the year...
La risposta non può che essere, secondo me, Solaris 10, per i seguenti motivi:
- il sistema operativo è usato in fase di benchmarking per i primati mondiali di velocità di esecuzione dei server;
- è Open Source, il che lo rende molto versatile per soluzioni personalizzate;
- è Unix, sinonimo di stabilità, continuità e sicurezza sin dal 1977;
- consente il tracing dinamico delle applicazioni (DTrace), ad uso di amministratori di rete e sviluppatori, per conprendere a fondo il comportamento delle stesse in ambienti mission-critical;
- ogni applicazione può girare in un contesto isolato (Container), in modo da prevenire il crash del sistema se questa termina con errori;
- il file system ZFS (Zettabyte File System) ha uno spazio di indirizzamento a 128bit, il che lo rende adatto nei datacenter a ospitare in un unico volume moltissimi dati;
- il meccanismo di Predictive Self-Healing "ripara" automaticamente e per quanto possibile il sistema, in modo da assicura la continuità dei servizi.
Insomma, dato che è gratis, da provare.
venerdì, agosto 03, 2007
Parallelismi & co.
- se avete a disposizione il codice sorgente dell'applicativo da far girare, allora potete ricompilarlo per poi esegiurlo su più macchine, che devono essere preventivamente messe in comunicazione via rete (avete cioè bisogno di un cluster). Le librerie per la compilazione che suggerisco sobo Mpich e Mpich2, disponibili per qualsiasi piattaforma, che sono una implementazione di MPI (Message Parsing Interface). Spesso il codice richiede una ritoccatina per essere ricompilato parallelamente;
- se invece non avete la disponibilità del codice sorgente allora la faccenda si complica. Se la vostra applicazione gira su Linux, la cosa più facile da implementare è un cluster OpenMosix, che è molto semplice da configurare e fornisce all'applicazione la parvenza di girare su una sola macchina con tanti processori quante sono le macchine collegate (il metodo è chimato SSI - Single-System Image). Il sito di OpenMosix fornisce una serie di distribuzioni di Linux con il kernel già modificato e precompilato per tutti i gusti, ed è possibile inoltre evitare l'installazione del cluster nei dischi rigidi grazie a numerose distribuzioni live. Tenete presente però che il sistema non accelererà l'esecuzione proporzionalmente al numero di pc connessi, esso riuscirà ad eseguire soltanto più processi nello stesso tempo (se ad es. per convertire un file audio in Mp3 un singolo pc impiega 4 minuti, con 10 pc identici collegati con OpenMosix si riuscirà a convertire 10 file in 4 minuti, e non lo stesso file in un decimo del tempo!);
- se avete del codice che deve essere interpretato, ad esempio un programma in Matlab, allora potete cercare di utilizzare i metodi di parallelismo offerti dall'interprete. Ad esempio, con la versione R2007a, rilasciata il primo marzo 2007, Matlab ha già al suo interno delle routine per applicare il parallelismo a istruzioni molto usate, come ad esempio la risoluzione di sistemi lineari. Prima dell'avvento di questa release sono stati studiati dei metodi che permettevano di interfacciare Matlab in rete con altri esecutori, una panoramica è disponibile qui, implementazioni che però hanno molti limiti (dopo un certo numero di computer connessi al cluster, le prestazioni diminuiscono invece che aumentare, a causa del collo di bottiglia creato dall'ambiente di controllo del parallelismo).
In generale si può affermare che l'esecuzione parallela di un programma non è mai una cosa nè semplice nè ovvia. Infatti deve in sostanza essere il programma stesso ad consentire il parallelismo, cioé l'esecuzione simultanea su due core diversi delle istruzioni nello stesso tempo.
Se invece il programma è puramente sequenziale, allora suggerisco di adottare un pc con processore a 2 o 4 core, che riesce, seppur di poco e solo in presenza di sistema operativo compatibile, ad accelerare le prestazioni in fase di calcolo.